#include <stdio.h>
#include <unistd.h>
#include <math.h>
#include <stdlib.h>
#include <GL/glut.h>

#define NUM 330
FILE *inf, *outf, *comm, *logg;




float correct(int num)
{
    int i,n,t;
    float x,y,z,res;
    for(int i=0; i<10; i++) //отброска мусора
    {
        usleep(30*1000);
        fscanf(comm,"%i %i %f %f",&n, &t, &x, &y);
    };
    for(int i=0; i<num; i++) // собственно усреднение
    {
        usleep(30*1000);
        fscanf(comm,"%i %i %f %f",&n, &t, &x, &y);
        res=res+pow((x*x+y*y),0.5);
//        fprintf(outf,"correction.. %i % \n",100*i/num);
    };
    res=res/(num);
    return res;
}
int main()
{

  int i,j,n,t;


  float data[NUM],dataN[NUM];
  float x,y,xN,yN,z,correction,sq,sum,delta,sigma,acc[NUM],accN[NUM],time[NUM] ;
  char red[80];
  char bufch;
    //сброс цикла
    comm=fopen("/dev/ttyACM0", "w");
    fprintf(comm,"%i \n",1);
    fclose(comm);
    usleep(30*1000);
    comm=fopen("/dev/ttyACM0", "rt"); //открытие файла каждый раз заново препятствует образованию очереди но теряет данные
    outf= stdout;
    logg=fopen("outf","w");

    //корректрировка
//    correction=correct(50);
    correction=0;
    time[-1]=0;
    fprintf(outf,"Корректрировка завершена. поправка %0.2f по %i значениям\n",correction,50);

    for( i=0; i<NUM-50; i++)
    {

        usleep(30*1000);
//        comm=fopen("/dev/ttyACM0", "rt"); //открытие файла каждый раз заново препятствует образованию очереди но теряет данные
        fscanf(comm,"%i %i %f %f",&n, &t, &x, &y);
        data[i]=pow((x*x+y*y),0.5);

        acc[i]=9.8*data[i]/255;
        acc[i]=acc[i]-9.8*correction/255;
        if(x<0){acc[i]=(acc[i])*(-1);};

        time[i]=time[i-1]+t;
        fprintf(outf,"%i %i %0.0f \n",n,t,data[i]);
 //       fprintf(logg,"%i %i %0.2f %0.2f %0.2f %0.4f \n",n, t, x, y,z, data[i]);
        sprintf(red,"%0.3f %0.6f \n",time[i]/1000,acc[i]); //лог
        for(j=0;j<=100;j++)
        {
 //           if(red[j]=='.'){red[j]=',';}; //замена точки на запятую
        }
        fprintf(logg,"%s",red );
    };
    fprintf(logg,"Корректрировка завершена. поправка %0.2f по %i значениям\n",correction,50);
    fprintf(outf," \n");
//    fprintf(outf,"------------------------------\n");
    fclose(logg);


  return 0;
}



